TNEF
Stream Structure
A TNEF stream
begins with a 32-bit signature that identifies the stream as a TNEF stream.
Following the signature is a 16-bit unsigned integer that is used as a key to
cross-reference attachments to their location within the tagged message text.
The remainder of the stream is a sequence of TNEF attributes. Message
attributes appear first in the TNEF stream, and attachment attributes follow.
Attributes belonging to a particular attachment are grouped together, beginning
with the attAttachRenddata attribute.
Most of the
constant values used in TNEF streams are defined in the TNEF.H header file.
Notably, TNEF_SIGNATURE, LVL_MESSAGE, LVL_ATTACHMENT, and
all the TNEF attribute identifiers are defined in this file. Other constants
have the values indicated by their interpretation to a C language compiler.
Typically, such constants are used to give the sizes of the following item. For
example, sizeof(ULONG) in an item s definition indicates that an integer
representing the size of the following unsigned long integer should occur in
that place in the TNEF stream.
All integers
in a TNEF stream are stored in little-endian binary form, but are shown in
hexadecimal throughout this appendix. Checksum values are simply 16-bit
unsigned integers that are the sum, modulo 65536, of the bytes of data that the
checksum applies to. All attribute lengths are unsigned long integers,
including any terminating null characters.
The key is a
nonzero, 16-bit unsigned integer that signifies the initial value of the
attachment reference keys. The attachment reference keys are assigned to each
attachment sequentially beginning with the initial value, that is passed to the
OpenTnefStream
The TNEF
implementation uses attribute identifiers to map attributes to their
corresponding MAPI properties. An attribute identifier is a 32-bit unsigned
integer made up of two word values. The high-order word indicates the data
type, such as string or binary, and the low-order word identifies the
particular attribute. The data types in the high order word are:
Type |
Value |
atpTriples |
0x0000 |
atpString |
0x0001 |
atpText |
0x0002 |
atpDate |
0x0003 |
atpShort |
0x0004 |
atpLong |
0x0005 |
atpByte |
0x0006 |
atpWord |
0x0007 |
atpDword |
0x0008 |
atpMax |
0x0009 |
The low-order
word values for each attribute are defined in the TNEF.H header file.